from fastapi import FastAPI
from pathlib import Path
import importlib

def load_routers(app: FastAPI, routers_dir: str):
    """
    动态加载指定目录下的所有路由模块。

    :param app: FastAPI 应用实例
    :param routers_dir: 包含路由模块的目录路径
    """
    # 获取路由目录的绝对路径
    routers_path = Path(routers_dir).resolve()
    # 获取目录名称作为模块的前缀
    module_prefix = routers_path.name

    # 遍历目录下的所有 .py 文件（排除 __init__.py）
    for file in routers_path.glob("*.py"):
        if file.name != "__init__.py":
            # 构造模块路径
            module_name = f"{module_prefix}.{file.stem}"
            # 动态导入模块
            module = importlib.import_module(module_name)
            # 检查模块中是否存在 router 对象
            if hasattr(module, "router"):
                # 将路由添加到 FastAPI 应用中
                app.include_router(module.router)